#ifndef hardwarecommunication__interrupts_h
#define hardwarecommunication__interrupts_h

#include <global_descriptor_table.h>
#include <multitasking.h>
#include <common/types.h>
#include <hardwarecommunication/port.h>

OS_NAMESPACE_BEGIN

namespace hardwarecommunication
{

class InterruptManager;

class InterruptHandler
{
protected:
	OS_NAME_PREFIX::common::uint8_t InterruptNumber;
	InterruptManager* interruptManager;
	InterruptHandler(InterruptManager* interruptManager,
			 OS_NAME_PREFIX::common::uint8_t InterruptNumber);
	~InterruptHandler();

public:
	virtual OS_NAME_PREFIX::common::uint32_t HandleInterrupt(OS_NAME_PREFIX::common::uint32_t esp);

	class InterruptManager
	{};
};

} // namespace hardwarecommunication

OS_NAMESPACE_END

#endif // header file
